package com.xique.door.biz.service;


import com.xique.common.core.web.domain.AjaxResult;
import com.xique.door.bean.domain.Elevator;
import com.xique.door.bean.request.elevator.ElevatorAddRequest;
import com.xique.door.bean.request.elevator.ElevatorAllListRequest;
import com.xique.door.bean.request.elevator.ElevatorEditRequest;
import com.xique.door.bean.request.elevator.ElevatorListRequest;

import java.util.List;

/**
 * @author shd
 * @create 2021/10/11 13:44
 */
public interface IElevatorBizService {

    /**
     * 获取session_token
     * @author shd
     * @date 2021/10/11 14:05
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult getSessionToken();

    /**
     * 同步电梯基础信息
     * @author shd
     * @date 2021/10/11 14:39
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncElvInfo(Long elvId);

    /**
     * 同步所有电梯基础信息
     * @author shd
     * @date 2021/10/11 14:39
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllElvInfo(Long parkId);

    /**
     * 电梯运行统计查询
     * @author shd
     * @date 2021/10/12 10:21
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncElvReport(Long elvId);

    /**
     * 电梯运行统计查询
     * @author shd
     * @date 2021/10/12 10:21
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllElvReport(Long parkId);

    /**
     * 同步电梯参数
     * @author shd
     * @date 2021/10/12 10:26
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncElvParam(Long elvId);

    /**
     * 同步所有电梯参数
     * @author shd
     * @date 2021/10/12 10:26
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllElvParam(Long parkId);

    /**
     * 同步运行集合
     * @author shd
     * @date 2021/10/13 14:38
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncRuntime(Long elvId);

    /**
     * 同步所有运行集合
     * @author shd
     * @date 2021/10/13 14:38
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllRuntime(Long parkId);

    /**
     * 同步故障集合
     * @author shd
     * @date 2021/10/13 14:38
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncFault(Long elvId);

    /**
     * 故障实时推送同步
     * @author shd
     * @date 2021/10/25 17:07
     * @param faultJson
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncFaultByImei(String faultJson);

    /**
     * 同步所有故障集合
     * @author shd
     * @date 2021/10/13 14:38
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllFault(Long parkId);

    /**
     * 同步事件集合
     * @author shd
     * @date 2021/10/13 14:38
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncEvent(Long elvId);

    /**
     * 同步所有事件集合
     * @author shd
     * @date 2021/10/13 14:38
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllEvent(Long parkId);

    /**
     * 同步故障情况
     * @author shd
     * @date 2021/10/13 14:38
     * @param elvId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    AjaxResult syncFaultList(Long elvId);

    /**
     * 同步所有故障情况
     * @author shd
     * @date 2021/10/13 14:38
     * @param parkId
     * @return com.ruoyi.common.core.domain.AjaxResult
     */
    void syncAllFaultList(Long parkId);

    /**
     * 设置回调地址
     * @author shd
     * @date 2021/10/25 16:40
     * @param url
     */
    AjaxResult setNotify(String url);

    /**
     * 电梯详情
     * @author shd
     * @date 2022/2/22 10:53
     * @param elvId
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult elevatorDetail(Long elvId);

    /**
     * 新增电梯
     * @author shd
     * @date 2022/2/20 11:10
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult addElevator(ElevatorAddRequest request);

    /**
     * 编辑电梯
     * @author shd
     * @date 2022/2/20 15:04
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult editElevator(ElevatorEditRequest request);

    /**
     * 删除电梯
     * @author shd
     * @date 2022/2/20 15:06
     * @param ids
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult removeElevator(String ids);

    /**
     * 查询电梯列表
     * @author shd
     * @date 2022/2/22 9:12
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult elevatorList(ElevatorListRequest request);

    /**
     * 获取电梯列表
     * @author shd
     * @date 2022/3/23 13:16
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getAllElevatorList(ElevatorAllListRequest request);

    /**
     * 批量同步事件
     * @author shd
     * @date 2022/3/29 14:18
     * @param list
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult syncEvents(List<Elevator> list);

    /**
     * 批量同步运行集合
     * @author shd
     * @date 2022/3/29 14:18
     * @param list
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult syncRuns(List<Elevator> list);

    /**
     * 批量同步运行统计集合
     * @author shd
     * @date 2022/3/29 14:18
     * @param list
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult syncReports(List<Elevator> list);
}
